Skip to content

Build Services page: hero, linked decisions, and service clusters (LS-1598) - #51

Merged
brandonmarshal merged 7 commits into
developfrom
feature/ls-1598-build-services-page
Sep 17, 2026
Merged

brandonmarshal merged 7 commits into
developfrom
feature/ls-1598-build-services-page

Conversation

@brandonmarshal

@brandonmarshal brandonmarshal commented Sep 10, 2026

Copy link
Copy Markdown
Collaborator

Summary

Builds the Services page in three patterns: the hero, a six-step "linked decisions" process row, and a service-clusters section grouping all 14 services into 5 thematic cards. No new colour tokens, font sizes, or global styles were needed — everything reuses existing semantic tokens, presets, and card shells.

Hero (patterns/hero/services-hero.php)

  • Breadcrumb, eyebrow, heading, description, primary/secondary CTAs
  • A wrapped row of all 14 service tags, colour-coded by lifecycle phase (Discover/Create/Build/Launch/Grow/Evolve) to match the mega-menu convention, each linking to its real /services/ page
  • A decorative "Services / Lifecycle" preview card reusing the existing is-style-glass-card shell
  • Interactive pill states (hover/focus-within background/border tint, lift, shadow, :focus-visible ring) added via src/scss/structural/services-hero.scss, since block-supports has no equivalent for hover/focus-visible
  • Fixed the breadcrumb-to-badge gap reading too tight (eyebrow badge top margin bumped from spacing|20 to spacing|30)

Linked decisions (patterns/sections/services-linked-decisions.php)

  • Six-step process pill row (Discover/Create/Build/Launch/Grow/Evolve) matching the site's lifecycle-phase colours, linking to new /services/ phase pages
  • Neutral pills with a phase-only badge, hover/focus-within states, :focus-visible outline
  • Fixed the whole-pill click target on both hero and this section's pills — previously only the text was clickable; the anchor now stays position:static so its ::before overlay sizes against the full pill, not just the text
  • Added src/scss/structural/services-linked-decisions.scss for the states/pseudo-elements JSON can't express

Service clusters (patterns/sections/services-service-clusters.php)

  • Five cluster cards in an asymmetric 3+2 layout, each with an icon well, index number, description, and a footer row of clickable tag links to the individual service pages
  • New shared card shell styles/sections/cards/card-cluster.json — no existing shell fit, since background and single-link behaviour differ from Card - Category
  • Equal card height via dimensions.minHeight:100%, footer tags pinned to the bottom via margin-top:auto
  • Fixed a real bug: the second card row's blockGap was nested outside spacing instead of inside it, silently falling back to WordPress's default gap instead of matching row 1
  • Distinguished the section's background from Section 1's using the existing surface.card token, matching homepage-what-we-build's established alternating-section convention
  • Added src/scss/structural/services-service-clusters.scss for the tag hover states

Test plan

  • php -l on all touched PHP files — passes
  • npm run schema:validate — all JSON files, including the new card-cluster.json, pass
  • npm run patterns:escape — the only warnings are in the two new files' pre-existing icon-echo lines, each already phpcs:ignore-annotated with justification (static, developer-authored SVG, not user input)
  • npm run security:scan — passes clean on every file this branch touches
  • sass compiles all three new stylesheets clean
  • Manual visual QA of hero, linked-decisions, and service-clusters sections in the Site Editor/frontend
  • Confirm pill/tag hover, focus-visible, and click-target fixes behave correctly across breakpoints

Tracked under LS-1598.

@brandonmarshal brandonmarshal added area:theme Theme & styles (templates, template parts, FSE) comp:block-patterns Patterns library/registration comp:theme-json Tokens, presets, settings lang:css Stylesheets lang:json JSON config/content lang:php PHP code labels Sep 10, 2026
@linear-code

linear-code Bot commented Sep 10, 2026

Copy link
Copy Markdown

LS-1598

@brandonmarshal brandonmarshal self-assigned this Sep 10, 2026
brandonmarshal added a commit that referenced this pull request Sep 10, 2026
Context
- Documents the Services page hero, linked-decisions, and service-clusters patterns added in PR #51
@brandonmarshal
brandonmarshal added this pull request to stack #52 September 10, 2026 05:51
@brandonmarshal
brandonmarshal requested a lite review from Copilot September 10, 2026 06:42

Copilot AI left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

🟡 Changes recommended

Unresolved moderate findings remain around asset loading, missing service links, and ineffective hover/focus states.

Once you've addressed the issues Copilot identified, you can request another Copilot review.

Pull request overview

Builds the Services page with a hero, lifecycle decision links, and five service-cluster cards.

Changes:

  • Adds 14 service links and six lifecycle phases.
  • Adds clustered service cards with shared styling.
  • Adds interaction styles, compiled assets, registration, and documentation.
File summaries
File Summary
styles/sections/cards/card-cluster.json Adds the cluster card style. Nit (2 votes): avoid exposing a one-off global style or provide another reusable consumer.
src/scss/structural/services-service-clusters.scss Adds cluster tag interactions. Moderate (3 votes): inline colors override hover/focus tint declarations.
src/scss/structural/services-linked-decisions.scss Adds lifecycle pill interactions. Moderate (3 votes): inline border color prevents the hover/focus tint from applying.
src/scss/structural/services-hero.scss Adds hero pill interaction styles.
patterns/sections/services-service-clusters.php Adds five cluster cards. Moderate (3 votes): four services are missing from cluster metadata. Moderate (2 votes): shared icon-well styles load only after render.
patterns/sections/services-linked-decisions.php Adds the six-step lifecycle process row.
patterns/hero/services-hero.php Adds the Services hero and 14 service links.
package.json Adds Sass build entries.
inc/animations.php Registers and detects Services bundles. Moderate (3 votes): add head-time Services-page conditions for these bundles and their shared dependency.
functions.php Registers editor styles.
CHANGELOG.md Documents the Services page changes.
assets/css/services-service-clusters.css Provides compiled cluster styles.
assets/css/services-linked-decisions.css Provides compiled lifecycle styles.
assets/css/services-hero.css Provides compiled hero styles.
Review details

Files not reviewed (3)

  • assets/css/services-hero.css: Generated file
  • assets/css/services-linked-decisions.css: Generated file
  • assets/css/services-service-clusters.css: Generated file
  • Files reviewed: 11/14 changed files
  • Comments generated: 6
  • Review effort level: Lite

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread inc/animations.php
Comment thread patterns/sections/services-service-clusters.php
Comment thread patterns/sections/services-service-clusters.php
Comment thread src/scss/structural/services-linked-decisions.scss Outdated
Comment thread src/scss/structural/services-service-clusters.scss Outdated
Comment thread styles/sections/cards/card-cluster.json
Comment thread patterns/sections/services-service-clusters.php
brandonmarshal added a commit that referenced this pull request Sep 11, 2026
Context
- Documents the Services page hero, linked-decisions, and service-clusters patterns added in PR #51
@brandonmarshal
brandonmarshal force-pushed the feature/ls-1598-build-services-page branch from 93e9795 to 601f310 Compare September 11, 2026 12:29
Hero
- Add patterns/hero/services-hero.php: breadcrumb, eyebrow, heading,
  description, and primary/secondary CTAs
- Add wrapped row of all 14 service tags, colour-coded by lifecycle
  Phase (Discover/Create/Build/Launch/Grow/Evolve) to match the
  mega menu convention, each linking to its real /services/ page
- Add decorative "Services / Lifecycle" preview card reusing the
  existing is-style-glass-card shell

Tokens & assets
- No new colour tokens, font sizes, or global styles required —
  reuses existing semantic tokens and presets throughout
- Source fresh Phosphor "regular" icons, embedded as real SVG markup

Validation
- php -l, patterns:escape, security:scan, and phpcs --standard=WordPress
  all pass clean on the new pattern
Layout fix
- Fix breadcrumb-to-badge gap reading too tight by bumping the
  eyebrow badge's top margin from spacing|20 to spacing|30

Service pill styling
- Switch pill label text to neutral text.default, keep icons
  phase-coloured for lifecycle-phase association
- Add a subtle phase-tinted background and phase-tinted border
  to each pill (colour-mix over existing phase tokens)
- Increase pill padding for a larger, more substantial pill
- Add hover/focus-within state: stronger background/border tint,
  translateY(-1px), subtle shadow
- Add a :focus-visible outline ring for keyboard accessibility

New structural stylesheet
- Add src/scss/structural/services-hero.scss for the pill
  interactive states (no block-supports equivalent exists for
  hover/focus-visible), wired into build scripts and the
  bundle-detection/enqueue system the same way as other hero
  bundles (inc/animations.php, functions.php editor styles)

Context
- Rest-state pill colours are set inline per instance (each pill
  mixes its own phase token); hover/focus overrides need
  !important to beat that inline specificity, documented in the
  stylesheet
…598)

- Add patterns/sections/services-linked-decisions.php: six-step process
  pill row (Discover/Create/Build/Launch/Grow/Evolve) matching the
  site's lifecycle-phase colours, linking to new /services/ phase pages
- Neutral pills with phase-only badge, hover/focus-within states,
  :focus-visible outline
- Fix whole-pill click target on both hero and Section 1 pills — only
  the text was clickable before; anchor now stays position:static so
  its ::before overlay sizes against the full pill, not just the text
- Add src/scss/structural/services-linked-decisions.scss for the
  states/pseudo-elements JSON can't express, wired into build/enqueue
- Correct services-hero.scss's CSS-limitation comments to AGENTS.md's
  exact format
- Add patterns/sections/services-service-clusters.php: "Five ways the
  work groups together" — 5 cluster cards in an asymmetric 3+2 layout,
  each with an icon well, index number, description, and a footer row
  of clickable tag links to the existing individual service pages
- Add styles/sections/cards/card-cluster.json: new shared card shell
  (no existing one fit — background and single-link behaviour differ
  from Card - Category)
- Add src/scss/structural/services-service-clusters.scss for the tag
  hover states, wired into build/enqueue like the other sections

Fixes
- Equal card height via dimensions.minHeight:100%, footer tags pinned
  to the bottom via margin-top:auto
- Fix a real bug: second card row's blockGap was nested outside
  spacing instead of inside it, silently using WordPress's default
  gap instead of matching row 1
- Distinguish the section's background from Section 1's using the
  existing surface.card token (matches homepage-what-we-build's
  established alternating-section convention)
Context
- Documents the Services page hero, linked-decisions, and service-clusters patterns added in PR #51
Bug fix
- services-service-clusters.php: fix both card rows' blockGap only
  setting its horizontal component, which fell back to WordPress's
  default vertical gap once columns stack on mobile/tablet
- services-linked-decisions.scss: add !important to the pill's hover
  border-color so it actually overrides the inline rest-state color
- services-service-clusters.scss: add !important to the cluster tag's
  hover background/border-color, same cause as above
- inc/animations.php: add a Services-page condition to the shared
  icon-well bundle so it loads in <head> instead of only being caught
  by the render_block/footer fallback
@brandonmarshal
brandonmarshal force-pushed the feature/ls-1598-build-services-page branch from 601f310 to 60a693b Compare September 14, 2026 08:17
brandonmarshal added a commit that referenced this pull request Sep 16, 2026
Context
- Documents the Services page hero, linked-decisions, and service-clusters patterns added in PR #51
@coderabbitai

coderabbitai Bot commented Sep 17, 2026

Copy link
Copy Markdown
Contributor

Warning

Review limit reached

Next included review available in 46 minutes.

Check out review usage here.

View limit details

Limit details: You’ve used the included review currently available.

You've used all free OSS reviews for now. Wait for the free limit to reset to keep reviewing this public repository.

Learn how review limits work.

Review configuration:

⚙️ Run configuration

Configuration used: Path: .coderabbit.yml

Review profile: ASSERTIVE

Plan: Advanced

Run ID: 88bb64bd-7d29-49a4-9b7c-6f801149fa55

📥 Commits

Reviewing files that changed from the base of the PR and between 392e67a and 88efe56.

📒 Files selected for processing (14)
  • CHANGELOG.md
  • assets/css/services-hero.css
  • assets/css/services-linked-decisions.css
  • assets/css/services-service-clusters.css
  • functions.php
  • inc/animations.php
  • package.json
  • patterns/hero/services-hero.php
  • patterns/sections/services-linked-decisions.php
  • patterns/sections/services-service-clusters.php
  • src/scss/structural/services-hero.scss
  • src/scss/structural/services-linked-decisions.scss
  • src/scss/structural/services-service-clusters.scss
  • styles/sections/cards/card-cluster.json

Thanks for using CodeRabbit! It's free for OSS, and your support helps us grow. If you like it, consider giving us a shout-out.

❤️ Share

Comment @coderabbitai help to get the list of available commands.

@brandonmarshal
brandonmarshal merged commit 6994c8b into develop Sep 17, 2026
2 of 4 checks passed
@brandonmarshal
brandonmarshal deleted the feature/ls-1598-build-services-page branch September 17, 2026 06:48
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

area:theme Theme & styles (templates, template parts, FSE) comp:block-patterns Patterns library/registration comp:theme-json Tokens, presets, settings lang:css Stylesheets lang:json JSON config/content lang:php PHP code

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants